/*
public class Test {
    public static void main1(String[] args) {
        setData s1 = new setData();
        s1.setDay(2021,10,5);
        s1.print();

    }
}


class setData {
    public int year;
    public int month;
    public int day;
      public void setDay(int year,int month,int day){
          this.year = year;
          this.month = month;
          this.day = day;

      }
      public void print(){
          System.out.println("年" + year + "月" + month+ "日" + day);
      }
}*/


/*
public class Test{
    public static void main(String[] args) {
        Date d1 = new Date();
        d1.setDay(2021,10,1);
        d1.print();
        Date d2 = new Date();
        d2.print();

    }
}


class  Date{
    public int year;
    public int month;
    public int day;


    public void setDay(int year,int month,int day){
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void print(){
        System.out.println(year + "   " +   month+   "    "+  day);
    }
}*/

/**
 * 构造方法名字必须与类名相同
 * 没有返回值，设置为void也不行
 * 创建对像时由编译器自己调用，并且在对象的生命周期内只出现一次
 * 构造方法可以重载
 *
 *this的用法
 * this.代表当前对象的引用
 *
 * this.属性
 * this.方法
 * this（）构造方法之间的调用
 * 必须放在构造方法的第一行
 *
 *一个对象的产生主要分为两步：
 * 1.为对象分配空间
 * 2.调用合适的构造方法
 *
 *
 *
 *static
 * 普通成员变量：类的内部，方法的外部
 * 静态成员变量：类的内部，方法的外部，被static修饰
 * 局部变量：方法的内部，被初始化的变量
 * 引用只能指向对象
 * 静态方法的内部是不能调用非静态方法的，因为静态方法的使用不依赖对象，非静态方法依赖对象的使用
 * ststic只能修饰成员变量
 */
class Student{
    public String name;
    public int age;
    public String gender;
    public Student(String name,int age,String gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "zhangsan"+ 18 + "三年级";
    }
}
public class Test{


    public static void main(String[] args) {
        Student s1 = new Student("zhangsan",18,"三年级");
        System.out.println(s1);

    }
    public static void main1(String[] args) {
        Date da1 = new Date();
        Date da2 = new Date(2021,10,3);

    }
}
    class Date{
    public int year;
    int month;
    int day;

    public Date(int y,int m,int d){
        this.year = year;
        this.month = month;
        this.day = day;
        System.out.println("带参数的构造方法！");
    }

    public Date(){
        System.out.println("不带参数的构造方法！");
            }
    public void print(){
        System.out.println(year + "" + month + "" + day);
    }
}